diff --git a/system/libraries/Input.php b/system/libraries/Input.php
index 98c2cbd..0d3c87b 100644
--- a/system/libraries/Input.php
+++ b/system/libraries/Input.php
@@ -179,6 +179,7 @@
 	 *
 	 * @access	public
 	 * @param	string
+	 * @param	bool
 	 * @return	string
 	 */
 	function post($index = '', $xss_clean = FALSE)
@@ -213,6 +214,7 @@
 	 *
 	 * @access	public
 	 * @param	string
+	 * @param	bool
 	 * @return	string
 	 */
 	function cookie($index = '', $xss_clean = FALSE)
@@ -244,6 +246,31 @@
 			return $_COOKIE[$index];
 		}
 	}
+
+	// --------------------------------------------------------------------
+	
+	/**
+	 * Fetch an item from the SERVER array
+	 *
+	 * @access	public
+	 * @param	string
+	 * @param	bool
+	 * @return	string
+	 */
+	function server($index = '', $xss_clean = FALSE)
+	{		
+		if ( ! isset($_SERVER[$index]))
+		{
+			return FALSE;
+		}
+
+		if ($xss_clean === TRUE)
+		{
+			return $this->xss_clean($_SERVER[$index]);
+		}
+		
+		return $_SERVER[$index];
+	}
 	
 	// --------------------------------------------------------------------
 	
@@ -259,15 +286,28 @@
 		{
 			return $this->ip_address;
 		}
-	
-		$cip = (isset($_SERVER['HTTP_CLIENT_IP']) AND $_SERVER['HTTP_CLIENT_IP'] != "") ? $_SERVER['HTTP_CLIENT_IP'] : FALSE;
-		$rip = (isset($_SERVER['REMOTE_ADDR']) AND $_SERVER['REMOTE_ADDR'] != "") ? $_SERVER['REMOTE_ADDR'] : FALSE;
-		$fip = (isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND $_SERVER['HTTP_X_FORWARDED_FOR'] != "") ? $_SERVER['HTTP_X_FORWARDED_FOR'] : FALSE;
-					
-		if ($cip && $rip)	$this->ip_address = $cip;	
-		elseif ($rip)		$this->ip_address = $rip;
-		elseif ($cip)		$this->ip_address = $cip;
-		elseif ($fip)		$this->ip_address = $fip;
+		
+		if ($this->server('REMOTE_ADDR') AND $this->server('HTTP_CLIENT_IP'))
+		{
+			 $this->ip_address = $_SERVER['HTTP_CLIENT_IP'];
+		}
+		elseif ($this->server('REMOTE_ADDR'))
+		{
+			 $this->ip_address = $_SERVER['REMOTE_ADDR'];
+		}
+		elseif ($this->server('HTTP_CLIENT_IP'))
+		{
+			 $this->ip_address = $_SERVER['HTTP_CLIENT_IP'];
+		}
+		elseif ($this->server('HTTP_X_FORWARDED_FOR'))
+		{
+			 $this->ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
+		}
+		
+		if ($this->ip_address === FALSE)
+		{
+			return $this->ip_address = '0.0.0.0';
+		}
 		
 		if (strstr($this->ip_address, ','))
 		{
@@ -279,11 +319,7 @@
 		{
 			$this->ip_address = '0.0.0.0';
 		}
-		
-		unset($cip);
-		unset($rip);
-		unset($fip);
-		
+				
 		return $this->ip_address;
 	}
 	
